﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OBL1_DiseñoDeAplicaciones.Utilidades;

namespace OBL1_DiseñoDeAplicaciones.ObjetosDeNegocio
{
    public abstract class Cliente 
    {
        private string nombre;
        private string ruc;
        private string direccion;

        #region Properties

        public string Nombre
        {
            get { return nombre; }
            set { nombre = value; }
        }
        
        public string Ruc
        {
            get { return ruc; }
            set { ruc = value; }
        }
        
        public string Direccion
        {
            get { return direccion; }
            set { direccion = value; }
        }

        #endregion

        public Cliente(string nombre, string ruc, string direccion) {
            this.nombre = nombre;
            this.ruc = ruc;
            this.direccion = direccion;
        }

        public abstract double CalcularCosto(double costo,int iva);
      
        public abstract void AceptarVisitor(Visitor v);

        public abstract Cliente Clonar();

        public abstract void Modificarme(string nombre,string direccion);

        public override bool Equals(object obj)
        {
            if (obj != DBNull.Value)
            {
                return this.ruc.Equals(((Cliente)obj).ruc);
            }
            else {
                return false;
            }
        }
    }
}
